/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.agi.devsol.aplicacao.comum;

import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author rgrosz
 */
public abstract class ListagemWebAction<T> {
    private List<T> entidades;
    private List<WebAction<T>> actions;
    private EditorEntidade<T> editorEntidade;
    private ConfirmadorExclusaoEntidade<T> confirmadorExclusao;
    
    public void consultarDados(){
        entidades = this.createEntidades();
        actions = new ArrayList<WebAction<T>>();
        this.editorEntidade = createEditorEntidade();   
        this.confirmadorExclusao = this.createConfirmadorExclusao();
        for(T item : entidades){
            WebAction<T> action = this.createNewWebAction();
            action.setEntidade(item);
            action.setEditor(this.editorEntidade);
            action.setConfirmador(confirmadorExclusao);            
            actions.add(action);
        }
    }

    public List<WebAction<T>> getActions() {
        return actions;
    }

    public void setActions(List<WebAction<T>> actions) {
        this.actions = actions;
    }

    public List<T> getEntidades() {
        return entidades;
    }

    public void setEntidades(List<T> entidades) {
        this.entidades = entidades;
    }

    
    public EditorEntidade<T> getEditorEntidade() {
        return editorEntidade;
    }

    public void setEditorEntidade(EditorEntidade<T> editorEntidade) {
        this.editorEntidade = editorEntidade;
    }
    
    
    public abstract List<T> createEntidades();
    
    public abstract WebAction<T> createNewWebAction();
    
    public abstract EditorEntidade<T> createEditorEntidade();
    
    public abstract ConfirmadorExclusaoEntidade<T> createConfirmadorExclusao();
    
}
